from estadoFase import EstadoFase, db_session
from sqlalchemy import exc
from flask import flash
session = db_session()

class AdjuntoManager(object):
    """Clase encargada del manejo de adjuntos de items"""
    def __init__(self):
        pass
    def __repr__(self):
        return '<Adjunto Manager>'
    
    def guardarAdjunto(self, adjunto):
        """
        Metodo encargado de almacenar adjuntos de items en la base de datos
        @param adjunto: Objeto adjunto que se desea guardar.
        """
        session.add(adjunto)
        try:
            session.commit()
        except exc.IntegrityError as ex:
            session.rollback()
            return flash("El adjunto ya existe", "error")
        else:
            return flash("Adjunto registrado exitosamente")
#        session.close()
        
    def eliminarAdjunto(self, idadjunto):
        """
        Metodo encargado de eliminar un adjunto de item
        @param idadjunto: id del adjunto que se desea eliminar.
        """
#        session = db_session()
        adjunto = session.query(Adjunto).filter(Adjunto.idadjunto == idadjunto).first()
        session.delete(adjunto)
        session.commit()
        
    def getAdjunto(self, idadjunto):
        """
        Metodo encargado de retornar adjuntos de items dado su idadjunto
        @param idadjunto: id del adjunto que se desea obtener
        """
        adjunto = session.query(Adjunto).filter(Adjunto.idadjunto == idadjunto).first()
        return adjunto
    
    def getAdjuntos(self):
        """Metodo encargado de retornar todas los adjuntos de items"""
        adjuntos = session.query(Relacion)
        return adjuntos
    
    